import Vue from 'vue'
import App from './App.vue'

Vue.config.productionTip = false;

new Vue({
  render: h => h(App),
  /* 
     我们要赶在子组件的生命周期开始之前，把$bus放在Vue的原型对象上
     有3个生命周期函数可以选择 beforeCreate create beforeMount
  */

  beforeCreate() {
    /* 初始化事件总线 */
    Vue.prototype.$bus = this;
  },

  /* 
    不能把$bus的定义卸载vm的后边，因为vm内的组件中mounted生命周期函数要用这个$bus
    如果把$bus放在了最后面，那么vm组件在用$bus的时候，这句代码还没有执行
    这句代码执行的时候，vm已经走完了生命周期，代表着内部所有的组件也走完了生命周期
    也就是说内部组件在mounted中无法访问$bus
  */
}).$mount('#app')